/**
 * @param {string} s
 * @return {string}
 */
var longestPalindrome = function (s) {
  function palindrome (s, l, r) {
    // 寻找以l,r为中心的最长子串
    while (l >= 0 && r < s.length && s[l] === s[r]) { // 当没有越界的时候 并且左边的等于右边的是 向两边扩散
      l--
      r++
    }
    // 返回以l和r为中心的最长回文子串 // 扩散结束 就说明找到了回文子串
    return s.slice(l + 1, r) // 因为l,r此时不是回文,l+1是l后一位,,r代表只能截取到r的前一位
  }
  let res = ''
  for (let i = 0; i < s.length; i++) {
    // 以s[i]为中心的最长回文子串
    let s1 = palindrome(s, i, i) // 找到以一个为中心的回文子串
    // 以s[i],s[i+1]为中心的最长回文子串
    let s2 = palindrome(s, i, i + 1) // 找到以两个为中心的回文子串
    res = res.length > s1.length ? res : s1
    res = res.length > s2.length ? res : s2
  }
  return res
};